package ru.mirent.console.colors;

import static java.lang.String.format;

/**
 * Конвертор для цвета букв текста.
 */
public class TextColor implements ColorValue {

    private final String value;

    private TextColor(String value) {
        this.value = value;
    }

    @Override
    public String getValue() {
        return value;
    }

    public static TextColor create(int numColor) {
        if (numColor < 0 || numColor > 255) {
            throw new RuntimeException(
                    format("Ожидаемый код значения цвета в промежутке от 0 до 255, фактически: %s", numColor));
        }

        return new TextColor(String.format("38;5;%d", numColor));
    }

    public static TextColor create(int red, int green, int blue) {
        return new TextColor(String.format("38;2;%d;%d;%d", red, green, blue));
    }

    public static TextColor create(TC textColors) {
        return new TextColor(textColors.getValue());
    }
}
